/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package przetarg;

import bazy.HibernateUtil;
import bazy.Przetargi;
import java.io.Serializable;
import java.util.List;
import javax.inject.Named;
import javax.enterprise.context.RequestScoped;
import javax.faces.application.ConfigurableNavigationHandler;
import javax.faces.context.FacesContext;
import logowanie.LogBean;
import org.hibernate.Session;

/**
 * Komponent zarządzajacy oknem wyświtlającym przetargi.
 * @author Grzesiek
 */
@Named(value = "przetargKontroler")
@RequestScoped
public class PrzetargKontroler implements Serializable {

    private List aktualnePrzetargi;
    private List starePrzetargi;
    private Session session;
    private String akcja;
    private int idPrzetarg;

    public List getAktualnePrzetargi() {
        return aktualnePrzetargi;
    }

    public List getStarePrzetargi() {
        return starePrzetargi;
    }

    public String getAkcja() {
        return akcja;
    }

    public void setAkcja(String akcja) {
        this.akcja = akcja;
    }

    public int getIdPrzetarg() {
        return idPrzetarg;
    }

    public void setIdPrzetarg(int idPrzetarg) {
        this.idPrzetarg = idPrzetarg;
    }

    /** Creates a new instance of PrzetargKontroler */
    public PrzetargKontroler() {
    }

    /**
     * Usuwanie przetargu z bazy.
     * @param id
     */
    public void usun(int id) {
        {
            session = HibernateUtil.getSessionFactory().openSession();
            session.beginTransaction();
            Przetargi uz = (Przetargi) session.load(Przetargi.class, id);
            session.delete(uz);

            session.getTransaction().commit();
            session.close();


        }
    }

    /**
     * Wczytanie przetargów z bazy z podziałem na aktualne i stare.
     */
    public void wczytajPrzetargi() {
        session = HibernateUtil.getSessionFactory().openSession();
        session.beginTransaction();
        aktualnePrzetargi = session.createQuery("from Przetargi p where p.dataPrzetargu>=current_date() order by p.dataPrzetargu asc").list();
        starePrzetargi = session.createQuery("from Przetargi p where p.dataPrzetargu<current_date() order by p.dataPrzetargu desc").list();
        session.getTransaction().commit();
    }

    /**
     * Inicjalizacja strony, sprawdzenie uprawnień, oraz w przypadku wystąpienia parametrów widoku, odpowiednia ich obsługa.
     */
    public void inicjalizuj() {
        FacesContext context = FacesContext.getCurrentInstance();
        LogBean bean = (LogBean) context.getApplication().evaluateExpressionGet(context, "#{logBean}", LogBean.class);
        if (!bean.isLoggedin() || !bean.getUprawnienia().equals("zaopatrzeniowiec")) {
            ConfigurableNavigationHandler handler = (ConfigurableNavigationHandler) context.getApplication().getNavigationHandler();
            handler.performNavigation("brak_dostepu");
        }

        if (akcja != null) {
            if (akcja.equals("usun")) {
                usun(idPrzetarg);
            }
        }

        wczytajPrzetargi();
    }

    /**
     * Zamknięcie sesji do bazy.
     */
    public void zakoncz() {
        session.close();

    }
}
